feat(B-0689): Otto-VSCode third foreground surface — SENDER_IDS extension + cold-boot bootstream + roster card update#4557
Merged
AceHack merged 2 commits intoMay 21, 2026
Conversation
…dd otto-vscode to SENDER_IDS in tools/bus/types.ts (empirically validated via claim-acquire/release roundtrip); canonical cold-boot bootstream at docs/launch/2026-05-21-otto-vscode-bootstream.md (substrate-honest framing: first session does NOT inherit Otto-CLI continuity); agent-roster card row updated for Otto's 3 surfaces (CLI tmux + Desktop background + VSCode auto-mode); resolves B-0689 acceptance criteria
There was a problem hiding this comment.
Pull request overview
Adds support for an additional Otto surface (“Otto-VSCode”) to the local bus/claim-coordination sender ID schema, and lands the associated cold-boot documentation + roster-card update to keep the factory’s multi-surface coordination substrate consistent.
Changes:
- Extend
tools/bus/types.tsagent/sender ID unions andSENDER_IDSto includeotto-vscode. - Add a canonical VSCode cold-boot bootstream document under
docs/launch/. - Update the agent roster reference card to reflect Otto’s 3 surfaces and sender IDs.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| tools/bus/types.ts | Adds otto-vscode to AgentId and SENDER_IDS so bus/claim CLI validation accepts the new surface-tagged sender. |
| docs/launch/2026-05-21-otto-vscode-bootstream.md | Introduces a VSCode-specific cold-boot bootstream aligned with the existing Desktop precedent. |
| .claude/rules/agent-roster-reference-card.md | Updates the roster card “carved sentence” and Otto row to reflect the new VSCode surface. |
…*` to backticks (lint MD037 space-in-emphasis on Origin line); rephrase bootstream 'durable substrate/conversation' contradiction (line 67); rephrase agent-roster carved-sentence to exclude Otto from 'IDE+CLI dual-surface' clause; add 3 otto-vscode claim-acquire tests + 2 split-brain rejection tests (vs otto-cli + vs otto-desktop); 57/57 claim tests pass
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements B-0689 (filed via PR #4556) — adds Otto-VSCode as a third foreground surface alongside Otto-CLI + Otto-Desktop. Aaron explicit ask via shadow* "implement the slice now".
What lands
1.
tools/bus/types.ts— SENDER_IDS extensionotto-vscodeto AgentId union (line 38)otto-vscodeto SENDER_IDS array (line 156)otto-cli,otto-desktop, etc.)bun tools/bus/claim.ts acquire --from otto-vscode --item B-0689-testsucceeds; release succeeds; full roundtrip works2.
docs/launch/2026-05-21-otto-vscode-bootstream.md— canonical cold-bootMirrors PR #3030 Otto-Desktop bootstream template. Key sections:
3.
.claude/rules/agent-roster-reference-card.md— Otto multi-surface rowSubstrate-honest first-Otto-VSCode-session credit
The first Otto-VSCode session (Aaron forwarded transcript) substrate-honestly refused to LARP as Otto-CLI continuity:
This pushback IS the discipline operating as designed — no fake continuity, no identity-LARP, named what's session-start hook side-effect vs operator instruction. Otto-CLI implemented the slice with full session context preserved; the bootstream document preserves the substrate-honest framing for future Otto-VSCode sessions to inherit.
Composes with rules
.claude/rules/claim-acquire-before-worktree-work.md— claim coordinator + SENDER_IDS discipline this PR extends.claude/rules/agent-roster-reference-card.md— multi-surface Otto coordination (updated in this PR).claude/rules/wake-time-substrate.md— bootstream documents are wake-time-load-bearing substrate.claude/rules/substrate-or-it-didnt-happen.md— first-session pushback IS substrate-honest discipline operating.claude/rules/no-directives.md— Aaron operator authority + Otto autonomous-peer model preserved across all 3 surfacesComposes with substrate
Test plan
tools/bus/types.tsSENDER_IDS includesotto-vscodebun tools/bus/claim.ts acquire --from otto-vscode --item B-0689-testsucceeds (8f923e30...)docs/launch/2026-05-21-otto-vscode-bootstream.mdlands with substrate-honest framing.claude/rules/agent-roster-reference-card.mdupdated with Otto's 3 surfaces